/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.device.modular.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 设备api日志实体
 *
 * @author levin
 * @date 2022/11/30 13:27
 **/
@Getter
@Setter
@TableName("DEV_API_LOG")
public class ApiLog {

    /**
     * 主键
     */
    @TableId
    @ApiModelProperty(value = "主键", position = 1)
    private String id;

    @ApiModelProperty(value = "父级ID", position = 1)
    private String parentId;

    @ApiModelProperty(value = "关联IDs", position = 1)
    private String relationIds;

    @ApiModelProperty(value = "关联ID", position = 1)
    private String relationId;

    @ApiModelProperty(value = "柜子编号", position = 1)
    private String cabinetCode;

    @ApiModelProperty(value = "柜门编号", position = 1)
    private String cabinetDoorCode;

    @ApiModelProperty(value = "物品rfids(多个逗号隔开)", position = 1)
    private String rfids;

    @ApiModelProperty(value = "用户ID", position = 1)
    private String userId;

    @ApiModelProperty(value = "用户卡号", position = 1)
    private String userNo;

    @ApiModelProperty(value = "请求类型: 1-开门 2-关门 3-盘库 4-自动盘库 5-客户端启动 6-离线上报 7-根据卡号获取用户信息 8-根据卡号获取柜门操作权限 9-获取指定柜所有柜门权限 10-webhook事件", position = 2)
    private Integer reqType;

    /**
     * 请求JSON
     */
    @ApiModelProperty(value = "请求JSON", position = 3)
    private String reqJson;

    /**
     * 响应JSON
     */
    @ApiModelProperty(value = "响应JSON", position = 4)
    private String respJson;

    /**
     * 错误信息
     */
    @ApiModelProperty(value = "错误信息", position = 5)
    private String errorMsg;

    /**
     * 结果类型 0-正常 1-内部异常【程序崩溃】 2-超时【当前时间大于时间戳2分钟】 3-穿越【时间戳大于当前时间】4-验签失败
     */
    @ApiModelProperty(value = "结果类型 0-正常 1-内部异常【程序崩溃】 2-超时【当前时间大于时间戳2分钟】 3-穿越【时间戳大于当前时间】4-验签失败 ", position = 6)
    private Integer resulltType;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "事件时间", position = 7)
    @TableField(fill = FieldFill.INSERT)
    private Date eventTime;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", position = 7)
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 数据解析标识 0-未解析 1-已解析
     */
    @ApiModelProperty(value = "数据解析标识 0-未解析 1-已解析", position = 8)
    private Integer daFlag;

    /**
     * 数据解析时间
     */
    @ApiModelProperty(value = "数据解析时间", position = 9)
    private Date daTime;

    @ApiModelProperty(value = "IOT事件ID", position = 9)
    private String eventId;

    @ApiModelProperty(value = "回调地址", position = 9)
    private String callbackUrl;

    @ApiModelProperty(value = "回调请求JSON", position = 9)
    private String callbackReq;

    @ApiModelProperty(value = "回调响应JSON", position = 9)
    private String callbackResp;

    @ApiModelProperty(value = "配对标识 0-否 1-是 （开关门用）", position = 9)
    private Integer pariFlag;

    @ApiModelProperty(value = "管理员ID", position = 9)
    private String adminId;

    @ApiModelProperty(value = "下一个ID（用于开关门）", position = 9)
    private String nextId;

    @ApiModelProperty(value = "0-离线事件 1-在线事件(默认)", position = 10)
    private Boolean onlineFlag;

    @ApiModelProperty(value = "动作对比时间")
    private Date actCompTime;

    @ApiModelProperty(value = "试剂重量")
    private BigDecimal reagentWeight;

    @ApiModelProperty(value = "物品ID(多个逗号隔开)")
    private String goodsIds;

    @ApiModelProperty(value = "试剂重量(多个逗号隔开)")
    private String reagentWeights;
}
